perm filename REPORT.TXT[DOC,CSR]27 blob sn#598506 filedate 1981-07-09 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00024 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002
C00005 00003	How to get started
C00008 00004	The dialog begins
C00015 00005	[Example UPDATE session.]
C00036 00006	[Example of an ORDERING session.]
C00048 00007	[Example of a session with RECEIVE.]
C00056 00008	[Example of MAILing reports.]
C00072 00009	[Example of SENDing reports]
C00092 00010	[Finally, the last subsystem: ADJUST]
C00104 00011	[Finishing a session.]
C00110 00012	How to print the mailing labels produced in the MAIL subprogram
C00114 00013	Files used by the system (general information)
C00120 00014	ADDFIL.DSK
C00125 00015	ORDERS.JAN, ORDERS.FEB, etc.
C00127 00016	ONHAND.DSK
C00134 00017	Here is what appeared on LABELS.TMP after the sample dialog:
C00137 00018	And here are the first invoices written onto INVOIC.TMP:
C00145 00019	This is the record which was saved in INVOI$.TMP from the same run.
C00147 00020	File BILLS.TMP after that dialog contains similar but more varied invoices:
C00163 00021	The BILLS$.TMP file from the same run.
C00167 00022	Here is the FORM.DAT used to prepare the above bills:
C00172 00023	Recovering from system crashes
C00177 00024	Appendix: Changes made to the program, and their dates.
C00186 ENDMK
C⊗;


The Computer Science Report Distribution System (wow) is a collection of
computer programs intended to automate many of the tasks associated with
our departmental reports.

The present document explains how to use the system. If any questions
come up that aren't answered here, it would be a good idea to fix this
document right away, so that eventually it will contain all the important
information about the system.

The first draft of the CSR system was written by William T. Colemen III
during the spring and summer of 1976. The second draft, on which the
present system is based, was written by D. E. Knuth during autumn l976.
Modifications and extensions have been done since then by Jim Davidson.
How to get started

First you must log on, under the project/programmername `USE,CSR'.
You need to know the password for this; the files are protected against
the use of people who don't know the password. (Only a few authorized
users should know it at any time.)

Once logged in, type RUN REPORT<cr> to the monitor. (As usual, <cr> means
carriage return; the monitor will have previously typed "." at you.)

It will take about a minute or so for the program to get itself ready;
mainly it is reading the mailing list from the permanent file ADDFIL.DSK,
and this takes some time. As soon as it is ready, the program will say:

  CSREPORT system:  What can I do for you?

The best way to learn how to use the system is to study an example of
what goes on in a typical session. Therefore most of this instruction
manual is simply a transcript of a dialog that might once have taken place.

However, before we get into the dialog, it will be helpful to learn a few
basic conventions.  When you use the program, it asks questions and you
give the answers or instructions about what the machine should do.
If you don't know how to respond, simply type `?<cr>' and the program
will tell you what kinds of responses it is willing to understand at the
moment. In fact, whenever you give an unexpected reply--a question mark
is simply a special case of this general rule--you will be told what
the legal responses are.

Furthermore, you can almost always get further information by typing
HELP<cr> instead of answering the machine's question. Then it will try
to explain what you need to know, before asking the question again.

Now we are ready to look at the sample dialog. The user in this case
will ask for help, so comparatively little more needs to be said by way
of further explanation.

The dialog begins

[As stated on the previous page, we are now going to learn how to use
the system by reading a transcript of a session that might once have
taken place. You will usually be able to tell whether it is the computer
or the user talking, because the user is supposed to speak only in
capital letters, while the computer has a lot more freedom.
Whenever there is something important to say that is not part of the
actual dialog, it will be enclosed in brackets, like this paragraph is.]

[You will recall that the user has typed RUN REPORT and is waiting for
the program to get ready for business. Finally it is ready and it says:]

  CSREPORT system:  What can I do for you? help

[Whoops, the user forget to set the SHIFT LOCK on his or her typewriter...
possibly because the writer of this manual forgot to tell him or her to
do that on page 3. Therefore the answer was `help' instead of `HELP' --
and computers being what they are, this message was unexpected. So it is
treated just as if it were `?', and the machine responds like this:]

?The responses I can understand at this point are:
UPD...,ORD...,REC...,MAI...,SEN...,ADJ...,
or <cr> (to get out of this loop),
or HELP<cr> (for more information).

  CSREPORT system:  What can I do for you? HELP

[So, you see, after it tells you the responses it expects, it asks the
same question over and over again. With infinite patience. If the reply
had been (lower case) `help' again, the same cycle would have repeated. Now,
however, the user noticed that capital letters are wanted, and said (upper
case) HELP. Here is what the machine replied then:]

Hello, this is your friendly CSREPORT system.
There are six kinds of things I am programmed to do for you:
	UPDATE	Look at and perhaps change the mailing list.
	ORDER	File away any orders that have been received
		for a given month's list.
	RECEIVE	Record payments received, or adjust accounts.
	MAIL	Prepare mailing labels and/or invoices and
		bills of lading for everyone that has ordered
		reports from a given month's list.
	SEND	Prepare invoices for isolated back-order requests,
		including orders from people not on the mailing list.
	ADJUST  Change the contents in file ONHAND.DSK, which is
		our current inventory of reports.
When I ask, `What can I do for you?', just type the first three letters
of one of these functions and hit carriage RETURN <cr>. (You can also
type more than three letters if you want to.) The user's manual, which
contains more information, is file REPORT.TXT[DOC,CSR].

  CSREPORT system:  What can I do for you? UPDATE

[OK, you see how helpful it was? It described the six main divisions
of the system. We will learn these six divisions in that same order,
in future sections of this document.  But first, notice that the machine
patiently came back to the same question again. How are we ever going
to get out of the rut? Obviously, one way is to answer the question,
as was done here by typing `UPDATE' (and then <cr>; all messages to this
system end with <cr>). ]

[If you look back at how the computer responded to the first (lower case)
call for `help', you will notice that it is waiting for any reply that
begins with the letters UPD or ORD or REC or MAI or SEN or ADJ; those are the
expected answers, and anything you type after these letters is immaterial.
In this case the user said UPDATE because he or she thought that UPD 
didn't sound as nice.]

[That first response to `help' also mentioned another way to reply, namely
to type <cr> alone.  This is another important convention of the system:
When it asks you a question, you don't have to answer it, instead you
simply hit <cr>. Then the program will go on to something else, "one level
out" from what it was doing. For example, if the user had just hit <cr> at
this point, the program would simply have stopped everything; this is the way
to tell it you are done. We will see many examples of this <cr> convention
as we read on.  But now turn the page and see what happened next.]
[Example UPDATE session.]

[You will recall that the user had just typed `UPDATE'; the machine
now responds by entering its UPDATE function:]

UPDATE: INS, DEL, MOD, or LOOK? HELP

The UPDATE routine should be used to make all changes to the
address file, since editing with E is risky. To insert a new entry,
type INS and follow instructions. To modify an existing entry, type
MOD and see what happens.  To delete an entry, type DEL (but don't delete
anybody who has orders outstanding on some ORDERS file -- it's best to
delete only after MAILing all orders).  To simply look at an entry,
type LOOK.  Type only <cr> when you want to quit updating.

UPDATE: INS, DEL, MOD, or LOOK? MOD

[You see, the user asked for HELP again, and this time another kind of
help was proffered. When the question was re-asked, the user decided
to try doing a MODification of some entry in the mailing list.]

[Pretty soon you're going to be able to read this dialog without me 
butting in so often; in fact, I'm going to confine myself mostly
to elaboration of things that aren't obvious, from now on. We can
let the machine and its user run the show as we eavesdrop:]

Type hashcode of entry to be modified: #HELP

I am going to try to identify an addressee for you. Type the
five-character hash code if you know it, or type 99999 if the
addressee is not on our mailing list and not being inserted into it.
If you don't know the hash code, type XXXXX and I will try a name search
of the whole file. If you type just <cr> now, I will go on to something
else. Since hash codes sometimes change, you should doublecheck the
addressee name I find in case it is the wrong person.

Type hashcode of entry to be modified: #IDMNE
Is the name JOHN G. HERRIOT? (Y or N) Y

[Here the user typed the final `Y'. Whenever the program wants you to
identify somebody in the mailing list, it always goes through this ritual,
first asking for the hashcode, then asking you to confirm the name after
it has been found. In this case, the user wishes to modify Prof. Herriot's
address, since he has just gone away on sabbatical; and the first step has
been accomplished successfully, having found him in the old file. At this
point the program will display the entry which is to be modified:]

LINE 1: JOHN G. HERRIOT
LINE 2: POLYA 261
Type number of a line to be changed (1 to 3),
	or <cr> if modifications are complete: 2

[The computer typed all this except the final `2', which was given by the
user.]

New line 2: GEERENSTRASSE 23

[Here the computer typed `New line 2: ' and the user typed GEERENSTRASSE 23<cr>.]

Type number of a line to be changed (1 to 3),
	or <cr> if modifications are complete: 3

[Note that the machine allows the user to change line 3 even though Herriot's
former entry consisted only of lines 1 and 2; an address can grow up to five
lines long in this way.]

New line 3: CH-8044 GOCKHAUSEN
Type number of a line to be changed (1 to 4),
	or <cr> if modifications are complete: 4
New line 4: SWITZERLAND
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 

[Here the user typed simply <cr>, indicating that the modification was now
completely specified.]

I deduce that the ZIP code or country is SWITZ;
	if not, please reject this and try again.

[Whenever the user modifies the last line of an address, the machine will
"deduce" the new zip code. Its deduction is based on the first five characters
following the final blank space on the last line.  The machine is concerned
about zip codes because the first three letters or digits of the hash code
agree with the first three letters or digits of the zip code; then when
it produces mailing labels in order by hash code, the labels are grouped
in a convenient manner. Since Herriot's previous zip code was `IDMAI',
indicating Stanford interdepartmental mail, he will get a new zip code and
a new hash code when he moves to Switzerland.]

Type the classification (C,F,N,M,A or B), or type <cr> to reject this entry: HELP

Type <cr> to reject this entry and flush it; or type C<cr> for
normal entry, F<cr> for the free list, N<cr> for the ONR list, M<cr> for
the ARPA list, A<cr> for the `automatic' list, B<cr> for the `automatic
microfiche' list.

Type the classification (C,F,N,M,A or B), or type <cr> to reject this entry: F
Hashcode changed from #IDMNE to #SWINE.
OK, the modification has been made.

[Hashcodes are conventionally preceded by a # in this system. Notice that some
hashcodes turn out by coincidence to be a pronounceable five-letter combination;
this is not intended to reflect on the character of anybody on the mailing list,
and we hope that no truly embarrassing five-letter words emerge. Herriot's
new one is hopefully as bad as they will get. Anyway he retains his F status
(free reports), naturally, being a faculty member of our department even
though he is on leave.  Now that the modification has been made, the computer
comes back with another question:]

UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #SWINE
Is the name JOHN G. HERRIOT? (Y or N) Y
LINE 1: JOHN G. HERRIOT
LINE 2: GEERENSTRASSE 23
LINE 3: CH-8044 GOCKHAUSEN
LINE 4: SWITZERLAND
hashcode=#SWINE,   category=F,   serial=421,
ordering history=NNNNNNNNNNN2,   current balance=$ .00

[The modification was indeed made as desired. LOOK is used to look at an
entry without changing it. Although Herriot's hash code has changed, his
`serial number' has not; everybody in the mailing list has a unique serial
number, which stays unchanged during modification.]

UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #XXXXX
Sorry, that hashcode isn't in the file. What is the name? HELP

I am trying to identify an addressee for you. Type the name
or any part of the name, and I will show you all name lines in the file 
which contain that sequence of characters (including blank spaces in
the middle of the sequence, if you use them). Note that I will search
only the first line of each address on the mailing list.

Sorry, that hashcode isn't in the file. What is the name? YAO
Here are all the entries matching that name:
#207FH: PROF. YAOHAN CHU
#IDMFK: PROF. A. C. YAO
Type hashcode of entry to be displayed: #IDMFK

[Now the user wanted to check whether or not Andy and Frances Yao, who
have just joined our faculty, were already on the list. A search through
all names in the file showed that Andy was in, but not Frances. Sometimes
the machine may find no matching names at all; but sometimes it may find
so many, they don't all fit on your screen at once. In such a case, you
should hold down the CONTROL key on the typewriter and then hit the
BREAK key (upper left corner of the keyboard). This stops the typout of
names until you have a chance to read them and perhaps jot down the hashcode
you want. To start the machine again, hold CONTROL down and hit the CLEAR key.
Once you have seen the list of names, you go back to the hashcode loop
and resume as if no name search had taken place.]

[Note that on a Datamedia terminal (the kind with black keys), things are
slightly different; you can hold the typeout by hitting the HOLD key, in
the lower right.  To resume typing, hit HOLD again.]

Is the name PROF. A. C. YAO? (Y or N) Y
LINE 1: PROF. A. C. YAO
LINE 2: POLYA 
hashcode=#IDMFK,   category=F,   serial=1411,  IDMAIL,
ordering history=NNNNNNNNNNN0,   current balance=$ .00
UPDATE: INS, DEL, MOD, or LOOK? INS

[Now the user wants to insert a new entry, since Frances should be included:]

Type the new address, two to five lines long:
Line 1: PROF. F. FRANCES YAO
Line 2: HER OFFICE IS IN POLYA HALL, NEAR THE XEROX MACHINE

[It seems this user has a peculiar sense of humor, but by
typing such a foolishly long line he or she caused the machine to
display more of its repertoire of responses to unusual circumstances:]

That line was 17 characters too long for our mailing labels.
Please shorten it.
Line 2: HER OFFICE IS IN POLYA HALL, IDMAIL
That line was 1 character too long for our mailing labels.
Please shorten it.
Line 2: POLYA IDMAIL
Line 3: 

[OK, that version of Line 2 was short enough. Since Line 3 was blank
(the user just typed <cr> at this point), there is no point in
going on to Line 4).]

I deduce that the ZIP code or country is IDMAI;
	if not, please reject this and try again.
Type the classification (C,F,N,M, or A), or type <cr> to reject this entry: F
OK, I've inserted it; hash code is #IDMFS, serial number is 1412
UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #FORGOT
Sorry, that hashcode isn't in the file. What is the name? YAO
Here are all the entries matching that name:
#207FH: PROF. YAOHAN CHU
#IDMFK: PROF. A. C. YAO
#IDMFS: PROF. F. FRANCES YAO
Type hashcode of entry to be displayed: #IDMFS
Is the name PROF. FRANCES F. YAO? (Y or N) Y
LINE 1: PROF. F. FRANCES YAO
LINE 2: POLYA 
hashcode=#IDMFS,   category=F,   serial=1412,  IDMAIL,
ordering history=NNNNNNNNNNN0,   current balance=$ .00
UPDATE: INS, DEL, MOD, or LOOK? DEL

[Now the subject has changed again. One of our customers from Australia
has asked to be removed from the mailing list:]

Type hashcode of entry to be deleted: #AUSKM
Is the name NICK KOMAROFF? (Y or N) Y
LINE 1: NICK KOMAROFF
LINE 2: PROFESSIONAL ENGINEER
LINE 3: 29 KENSAL ST.
LINE 4: MOOROOKA, QUEENSLAND 4105
LINE 5: AUSTRALIA
hashcode=#AUSKM,   category=C,   serial=34,
ordering history=NNNNNNNNNNN0,   current balance=$ .00
Do you really want to delete this? (Y or N) Y
OK, I did it.
UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #AUSKM
Sorry, that hashcode isn't in the file. What is the name? 

[Here the user simply typed <cr>, so instead of doing a name search the
machine moves out one level:]

UPDATE: INS, DEL, MOD, or LOOK? MOD
Type hashcode of entry to be modified: #WIRTH
Sorry, that hashcode isn't in the file. What is the name? WIRTH
Here are all the entries matching that name:
#SWIFN: PROF. N. WIRTH
#454AC: MICHAEL C. WIRTH
Type hashcode of entry to be modified: #SWIFN
Is the name PROF. N. WIRTH? (Y or N) Y
LINE 1: PROF. N. WIRTH
LINE 2: E.T.H.
LINE 3: CLAUSIUSSTR. 55
LINE 4: CH-8092
LINE 5: ZURICH, SWITZERLAND
hashcode=#SWIFN,   category=C,   serial=616,
ordering history=NNNNNNNNNNN0,   current balance=$ .00

[Wirth and Herriot are exchanging houses this year. We gave Herriot
Wirth's home address, now we give Wirth Herriot's:]

Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 2
New line 2: 1302 CHANNING AVE.
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 3
New line 3: PALO ALTO CA 94301
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 4
New line 4:  
Type number of a line to be changed (1 to 4),
	or <cr> if modifications are complete: 5
Invalid line number.
Type number of a line to be changed (1 to 4),
	or <cr> if modifications are complete:

[This is the way addresses shrink to fewer lines. Since line 4 became blank,
it wasn't necessary for the user to try to blank out line 5, and he or she
didn't notice that the computer began to ask specifically for changes to 
lines 1 to 4 only.]

I deduce that the ZIP code or country is 94301;
	if not, please reject this and try again.
Type the classification (C,F,N,M, or A), or type <cr> to reject this entry: C
Hashcode changed from #SWIFN to #943FW.
OK, the modification has been made.

[The zipcode will be wrong if you hyphenate the country name or put it in
parentheses, etc. For East Germany, don't use DDR (GERMANY) or GERMAN
DEMOCRATIC REPUBLIC, since that leaves zip codes of (GERM and REPUB,
respectively; use GERMANY- DDR (including that space). In CANADA, always
put the word CANADA last, after the Canadian postal code if you know it.
Don't use U.K., use UNITED KINGDOM. And so on. Whenever you make a mistake,
the computer will `deduce' the wrong zip code, and you can recover without
putting the error into the file if you type <cr> without a classification
code.
If the classification code is A, N, or M, the US zip code will remain on
the last address line, and the assumed zip will be taken as AUTOM, ONRXX,
or DARPA, respectively. This causes people on those lists to be grouped
together in the output, as desired.]

UPDATE: INS, DEL, MOD, or LOOK? 

[Now the user has typed just <cr> to the UPDATE query. This means he is
done updating, he no longer wants to INS, DEL, MOD, or LOOK. If you
want to see what happened next, go on to the next page. But if you are
tired, why not rest for awhile first.]
[Example of an ORDERING session.]

[Our story so far: After an exciting discourse with the UPDATE subsystem,
our user has decided to stop updating. The next thing that the machine types is:]

  CSREPORT system:  What can I do for you? ?
?The responses I can understand at this point are:
UPD...,ORD...,REC...,MAI...,SEN...,ADJ...,
or <cr> (to get out of this loop),
or HELP<cr> (for more information).

  CSREPORT system:  What can I do for you? ORDER

[Yes, it's back to where we were before. But this time the idea is to process
some of the orders that just came in.]

For which month? HELP

The ORDERS subsystem is used to record orders received from a
given month's mailing list. The information you enter is recorded in
the file ORDERS.XXX where XXX is JAN,FEB, ..., or DEC.

For which month? 8
?The responses I can understand at this point are:
JAN...,FEB...,MAR...,APR...,MAY...,JUN...,JUL...,AUG...,SEP...,OCT...,NOV...,DEC...,
or <cr> (to get out of this loop),
or HELP<cr> (for more information).
For which month? AUG
ORDER: ADD or CHANGE? HELP

In ADD mode, you can add new orders to the file. In CHANGE, you
modify a previous entry for a particular customer, adding or deleting
reports from his list.  You identify a person by his hashcode,
and then say which reports he has ordered. For example, if he 
wants 1,9, A, and G, you can type 19AG or 1AG9, etc.

ORDER: ADD or CHANGE? ADD
No orders on file for AUG, I will create a new file.

[Here, the user has elected to add new orders to the August list.
The machine has looked to see if there is a file called ORDERS.AUG.
Since there was no such file, it assumed that the information to be typed
in next represents the first orders to be recorded for August.]

Type hashcode of person ordering: #021FG
Is the name PROF. PETER KUGEL? (Y or N) Y
Reports ordered: F
Type hashcode of person ordering: #019SE
Is the name CHARLES A. STEELE, JR.? (Y or N) Y
Reports ordered: D2468AEGIK
Type hashcode of person ordering: #209UE
Is the name NAVAL SURFACE WEAPONS CTR.? (Y or N) Y
Reports ordered: 248G
Type hashcode of person ordering: #IREFR
Is the name PROF. C.A.R. HOARE? (Y or N) D
?The responses I can understand at this point are:
Y...,N...,
or <cr> (to get out of this loop),
or HELP<cr> (for more information).
Is the name PROF. C.A.R. HOARE? (Y or N) Y
Reports ordered: D

[Notice that the user was going too fast in the previous example,
wanting to type the report order before confirming the name. It is
important to confirm the name, even though it checks almost always,
since zip codes and hash codes may have changed between the time
the abstract was sent and the order received.]

Type hashcode of person ordering: #JAPOK
Is the name HIROYA KAWAI? (Y or N) Y
Reports ordered: D48XC

[Here the "X" was an error, KAWAI ordered only D, 4, 8, and C.  Since
X is not a valid report code for August, this will simply be deleted
later when the reports are mailed, as we shall see.  The computer has
no way of knowing how many August reports there are at this time, since
the information from August's abstract list is put in only when mailing
the reports later.   
If you make a mistake in the reports ordered, and fail to correct it, 
your mistake is dutifully written onto the file ORDERS.XXX where XXX is 
the relevant month. It is possible to edit that file using the normal 
`E' editor. A better method, however, is to use the CHANGE subprogram, 
to make your corrections.]

Type hashcode of person ordering: #934H0
Sorry, that hashcode isn't in the file. What is the name? DOURSON
Here are all the entries matching that name:
#934HO: R. H. DOURSON
Type hashcode of person ordering: #934HO
Is the name R. H. DOURSON? (Y or N) Y
Reports ordered: 3DF68CIP
Type hashcode of person ordering: #

[Again, the user makes a mistake (the `P' shouldn't be there), but this time he
notices it, and decides to correct it. First, we get out of ADD by entering <cr>.]

6 new orders written onto ORDERS.AUG.
ORDER: ADD or CHANGE? CHANGE
6 entries found in ORDERS file.
Enter hash code of customer to be modified: #934HO
Is the name R. H. DOURSON? (Y or N) Y
Current list of reports ordered: 3DF68CIP.
Enter corrected list: 3DF68CI
Enter hashcode of customer to be modified: #019SE

[The user takes care of Dourson's erroneous report, then notices that 
one report was accidentally omitted from the list for C. Steele.]

Is the name CHARLES A. STEELE, JR.? (Y or N) Y
Current list of reports ordered: D2468AEGIK.
Enter corrected list: D2468ACEGIK
Enter hash code of customer to be modified: #
2 records changed in ORDERS file.

[Now the user failed to type a hashcode, moving us up one level, and
we return to typing in the list of orders.

In practice, you are encouraged to save your corrections, and do them in bunches,
since switching back and forth between ADD and CHANGE can be time-consuming.]

ORDER: ADD or CHANGE? ADD
I will append to existing orders recorded on file ORDERS.AUG.

[OK, the user decided to go back to more ORDERing. This time the
machine found the file ORDERS.AUG, having just stored 6 orders there.]

Type hashcode of person ordering: #303WM
Is the name PROF. WILLIAM I. GROSKY? (Y or N) Y
Reports ordered: D468
Type hashcode of person ordering: #
1 new orders written onto ORDERS.AUG.

[Here the machine's grammar leaves something to be desired, since the system
programmer didn't expect there would often be only one new order!]

ORDER: ADD or CHANGE? 

  CSREPORT system:  What can I do for you? UPDATE
UPDATE: INS, DEL, MOD, or LOOK? MOD
Type hashcode of entry to be modified: #303WM
Is the name PROF. WILLIAM I. GROSKY? (Y or N) Y

[The same man who was the subject of the previous order also wanted his address
to be changed. Note that it would be possible to go back and forth many times
between ORDER and UPDATE, but it is more efficient to do all the orders first
(before the hash codes change) and then go through again to make all the updates.]

LINE 1: PROF. WILLIAM I. GROSKY
LINE 2: GEORGIA INSTITUTE OF TECHNOLOGY
LINE 3: SCHOOL OF INFORMATION
LINE 4: AND COMPUTER SCIENCE
LINE 5: ATLANTA, GEORGIA  30332
hashcode=#303WM,   category=C,   serial=967,
ordering history=NNNNNNNNNNN0,   current balance=$ .00
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 2
New line 2: MATHEMATICS DEPARTMENT
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 3
New line 3: COMPUTER SCIENCE SECTION
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 4
New line 4: WAYNE STATE UNIVERSITY
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 5
New line 5: DETROIT,MICHIGAN 48202
Type number of a line to be changed (1 to 5),
	or <cr> if modifications are complete: 
I deduce that the ZIP code or country is 48202;
	if not, please reject this and try again.
Type the classification (C,F,N,M, or A), or type <cr> to reject this entry: C
Hashcode changed from #303WM to #482II.
OK, the modification has been made.
UPDATE: INS, DEL, MOD, or LOOK? 

  CSREPORT system:  What can I do for you? REC

[This new move takes us to the next chapter of our story.]
[Example of a session with RECEIVE.]

[At the end of the last chapter, the user typed `REC', which is short
for `RECEIVE'. This is the subsystem that changes account balances.]

Type hashcode of account to credit (or 99999): #CANRO
Is the name DR. R. S. ROSENBERG? (Y or N) Y
Amount rec'd (or amount + or -, if accounting adjustment)? HELP

Type amount followed by <cr>, e.g., 5.20<cr>,
if $5.20 has been received in payment for this account.
Type amount followed by -<cr> if the account balance is to
decrease by this amount but no payment has been received.
Type amount followed by +<cr> if the account balance is to
increase by this amount. Just type <cr> to leave the account
unchanged. People not on the mailing list have hash code #99999.
Amount rec'd (or amount + or -, if accounting adjustment)? $3.50

[That's all there is to it; $3.50 has been subtracted from Rosenberg's balance.

The next example is hypothetical, but it demonstrates another important
kind of thing you can do with RECEIVE.  Sometimes you just want to
adjust somebody's account, but no payment has been received. For
example, he might have been mischarged for a report he never got, because
of some slip, or he might have been overcharged or undercharged somehow.
By typing the amount followed by a minus sign, you decrease his balance due;
by typing an amount followed by a plus sign, you increase that balance. Here
is a demonstration of how to decrease DR. F. FIALA's balance due by one penny:]

Type hashcode of account to credit (or 99999): #CANRF
Is the name DR. F. FIALA? (Y or N) Y
Amount rec'd (or amount + or -, if accounting adjustment)? $0.01-

[That did it. Just to make sure, we can now leave the RECEIVE routine and
go back into UPDATE, to LOOK at his account:]

Type hashcode of account to credit (or 99999): #
  CSREPORT system:  What can I do for you? UPDATE
UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #CANRF
Is the name DR. F. FIALA? (Y or N) Y
LINE 1: DR. F. FIALA
LINE 2: DEPT. OF MATHEMATICS
LINE 3: CARLETON UNIVERSITY
LINE 4: OTTAWA, CANADA K1S 5B6
hashcode=#CANRF,   category=C,   serial=152,
ordering history=NNNNNNNNNNN5,   current balance=$ 18.69

[You see, it worked! Now let's put that penny back and check it again:]

UPDATE: INS, DEL, MOD, or LOOK? 

  CSREPORT system:  What can I do for you? REC
Type hashcode of account to credit (or 99999): #CANRF
Is the name DR. F. FIALA? (Y or N) Y
Amount rec'd (or amount + or -, if accounting adjustment)? $0.01+
Type hashcode of account to credit (or 99999): #
  CSREPORT system:  What can I do for you? UPD
UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #CANRF
Is the name DR. F. FIALA? (Y or N) Y
LINE 1: DR. F. FIALA
LINE 2: DEPT. OF MATHEMATICS
LINE 3: CARLETON UNIVERSITY
LINE 4: OTTAWA, CANADA K1S 5B6
hashcode=#CANRF,   category=C,   serial=152,
ordering history=NNNNNNNNNNN5,   current balance=$ 18.70
UPDATE: INS, DEL, MOD, or LOOK? 

[Of course one wouldn't really be so mistrustful of the CS Report System
in practice; you don't have to inspect the accounts, since computers
never make mistakes....stakes...stakes...stakes...stakes...stakes...stakes...stakes.
]

  CSREPORT system:  What can I do for you? RECEIVE
Type hashcode of account to credit (or 99999): #99999
Is the name PEOPLE NOT ON MAILING LIST? (Y or N) Y
Amount rec'd (or amount + or -, if accounting adjustment)? $12.25
California resident? (Y or N) Y

[The above example shows how to receive payment from people not on the
mailing list. They all share a common hash code, #99999, and the balance
due on that account represents an accumulation over all bills sent out to
people not otherwise on the list. In this case you are asked whether or
not the money is received from a California resident, for if it is we
must pay sales tax.  The receipts subject to sales tax will be shown later
in the summary of the day's financial transactions (see page 11).
If a customer is already on the mailing list, the computer doesn't ask
whether or not he is a California resident, since that can be figured out
by looking at the zip code.]

[Now we have seen all aspects of RECEIVE, so we shall leave it:]

Type hashcode of account to credit (or 99999): #
[Example of MAILing reports.]

  CSREPORT system:  What can I do for you? MAIL
MAIL subsystem: AVERY or CHESHIRE labels? HELP

The MAIL subsystem is used to prepare mailing labels and/or
invoices for monthly report distribution.  Two kinds of mailing labels
are presently provided for: AVERY (34 characters wide, one printed
at a time) and CHESHIRE (34 characters wide and three printed at once).
When mailing an abstract list, type ABS<cr> and I will prepare the file
LABELS.TMP containing mailing labels for everyone on the mailing list
except codes N, M, or A.  When mailing invoices and reports, type
REP<cr> and give the necessary information about the relevant month's
reports.  The ORDERS.XXX file for that month will be used to specify
all orders, and the activity records for all customers are shifted
left one position unless you request otherwise.

MAIL subsystem: AVERY or CHESHIRE labels? AVERY
MAIL subsystem: Sending abstracts or reports? REPTS
For which month? AUG
I need to know some things from that abstract list.

[The comment, `I need to know some things...' is the machine's nice way of
telling you that a somewhat tedious question-and-answer session must now
begin, in which you are supposed to feed in a lot of relevant information.
During this session, you have several chances to correct errors (for example,
by typing <cr> to a question, the machine will start over again on the
report it was last interested in); if some terrible error is made, you can
type QUIT at an appropriate time and start over from scratch.  A lot of
invoices will be printed based on what you type now, so it is important to
get the detailed facts straight.]

Please enter STAN- or AIM- or HPP- number of reports 1 and 2,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):
HELP!

At this point I need to know the names and numbers of the reports,
in order to identify them meaningfully on the invoices to
be written. Here are three examples of the form I want you to type:
STAN-CS-76-562*KNUTH,TRABB PARDO,EARLY DEVEL OF PROG LANGUAGES
AIM-282*TAYLOR,SYNTHESIS OF MANIPULATOR CONTROL PROGRAMS(THESIS)
HPP-77-1*SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS
Note that there should be an asterisk (and no space) between the report
number and the author name(s). The title has to be abbreviated so that
everything fits on one line, even when I substitute the word `(microfiche) '
for the asterisk. If the report is a thesis, follow the title by `(THESIS)'.

Please enter STAN- or AIM- or HPP- number of reports 1 and 2,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):
AIM-280*GROSSMAN,TOLERANCING IN DISCR PARTS MFG & ASSEMBLY
What is the cost of hardcopy? (If unavailable, say anything.) $HELP
?I wanted you to type a dollars-and-cents number like 3.14<cr>----
Please try again, or just type <cr> to get out of this.
What is the cost of hardcopy? (If unavailable, say anything.) $2.40
How many copies of AIM-280(hardcopy) 
are available for distribution? 182
How many copies of AIM-280(microfiche) 
are available for distribution? 300
Thanks. Can I assume that the information you just gave for this report 
is correct and complete? (Y or N) Y
Please enter STAN- or AIM- number of reports 3 and 4,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):
STAN-CS-76-556*GUIBAS,ANALYSIS OF HASHING ALGORITHMS(THESIS)
What is the cost of hardcopy? (If unavailable, say anything.) $5.55
How many copies of STAN-CS-76-556(hardcopy) 
are available for distribution? 33
How many copies of STAN-CS-76-556(microfiche) 
are available for distribution? 75
Thanks. Can I assume that the information you just gave for this report 
is correct and complete? (Y or N) Y
Please enter STAN- or AIM- number of reports 5 and 6,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):

........

	........
		and so on, the dialog continues but it is too
			boring to reproduce here in full..........

				finally come the last reports:

Please enter STAN- or AIM- number of reports H and I, followed by *AUTHOR,TITLE
 (or <cr> if done, QUIT<cr> to abort):
AIM283
What is the cost of hardcopy? (If unavailable, say anything.) $ANYTHING
?I wanted you to type a dollars-and-cents number like 3.14<cr>----
Please try again, or just type <cr> to get out of this.
What is the cost of hardcopy? (If unavailable, say anything.) $

[Here the user realized he forgot to give the author and title, so he hits
<cr> to start over on this report.]

Please enter STAN- or AIM- number of reports H and I, followed by *AUTHOR,TITLE
 (or <cr> if done, QUIT<cr> to abort):
AIM-283*DAVIS,APPL OF META KNOWLEDGE TO LARGE KNOWLG BASES(THESIS)
What is the cost of hardcopy? (If unavailable, say anything.) $2.83
How many copies of AIM-283(hardcopy) 
are available for distribution? 0

[By saying 0 copies are available, you guarantee that no orders for this
report will be shipped. The August abstract list actually said that
hardcopy of this report is not available; if somebody tried to order it
anyway, he gets a "sorry" message printed on his invoice.]

How many copies of AIM-283(microfiche) 
are available for distribution? 300
Thanks. Can I assume that the information you just gave for this report 
is correct and complete? (Y or N) Y
Please enter STAN- or AIM- or HPP- number of reports J and K,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):
HPP-77-5*STEFIK,MARTIN, REVIEW OF KNWLDGE BASED PROBLEM SOLVG
What is the cost of hardcopy? (If unavailable, say anything.) $2.20
How many copies of HPP-77-5(hardcopy) 
are available for distribution? 50
How many copies of HPP-77-5(microfiche) 
are available for distribution? 50
Thanks. Can I assume that the information you just gave for this report 
is correct and complete? (Y or N) Y
Please enter STAN- or AIM- or HPP- number of reports L and M,
 followed by *AUTHOR,TITLE (or <cr> if done, QUIT<cr> to abort):

[At this point the user was finally done typing in the information about
August reports, so the response was just <cr>.]

OK, now I'm looking at the orders...
I ignored the invalid report code X which appears in the following order:
#JAPOK,    508:D48XC	9 OCT 1976

[Remember when this bad order was made on page 6? As promised, such an error
is simply ignored by MAIL.]

I have read through all the orders, and here is how things stand:
(hardcopy)	To be	Unfillable	(microfiche)	To be	Unfillable
Cost  On hand	sent	requests	      On hand	sent	requests
AIM-280*GROSSMAN,TOLERANCING IN DISCR PARTS MFG & ASSEMBLY
$ 2.40	182	0	0			300	2	0
STAN-CS-76-556*GUIBAS,ANALYSIS OF HASHING ALGORITHMS(THESIS)
$ 5.55	33	1	0			75	4	0
STAN-CS-76-557*PATERSON,INTRO TO BOOLEAN FUNCTION COMPLEXITY
$ 2.25	84	0	0			97	3	0
AIM-281*MANNA,WALDINGER,IS`SOMETIME'SOMETIMES BETTER?
$ 2.90	45	0	0			300	5	0
STAN-CS-76-559*GOLUB ET AL,RANK DEGENERACY AND LEAST SQUARES
$ 2.75	21	0	0			99	1	0
AIM-282*TAYLOR,SYNTHESIS OF MANIPULATOR CONTROL PROGRAMS(THESIS)
$ .00	0	0	0			300	3	0
STAN-CS-76-561*WOODS,MATH PROG LANGUAGE: USER'S GUIDE
$ .00	4  	4	1			40	1	0
STAN-CS-76-562*KNUTH,TRABB PARDO,EARLY DEVEL OF PROG LANGUAGES
$ 3.50	180	2	0			80	2	0
AIM-283*DAVIS,APPL OF META KNOWLEDGE TO LARGE KNOWLG BASES(THESIS)
$ 2.83	0	0	0			300	2	0
HPP-77-5*STEFIK,MARTIN, REVIEW OF KNWLDGE BASED PROBLEM SOLVG
$ 2.20  50  	0	0			50  	1	0
Please check this carefully. If there has been some error,
type <cr> to exit; but if it's all right to go ahead and print the invoices,
type Y<cr> and I will prepare them: Y
OK, I will begin to work on the invoices.
Do you want the activity codes to be shifted? (Y or N) HELP

Each addressee has activity codes representing the number of orders
he made during the last 12 mailing periods. If you type Y<cr>, the
present mailing is considered a new mailing period.  If you type
N<cr> or <cr>, the present mailing is considered to be combined with
the previous mailing period.

Do you want the activity codes to be shifted? (Y or N) N

[By saying not to shift the activity codes, the user is implying that the
present mailing is just an extension of the previous one; the previous
mailing was presumably done prematurely, and a lot of order forms came
in after the first mailing went out. After the previous mailing, file
ORDERS.AUG was deleted, and the new orders sent out today were a new batch.
Usually, of course, there will be only one mailing per abstract list,
so the answer to the above question will usually be Y.]

The invoices, bills of lading, and dunning letters have been written
onto file INVOIC.TMP. To print them, do
		XS INVOIC.TMP/NOHEAD
and after successful completion of that do
		DEL INVOIC.TMP.
The files ORDERS.AUG and INVOI$.TMP contain shorter records of
the orders requested and the invoices actually sent (for your permanent 
records). These should also be XSpooled and then DELeted.
The mailing labels have been written onto file LABELS.TMP. 
To print them, see instructions in the user manual; be sure to delete
this file afterwards.

[The instructions for printing mailing labels appear on page 12.]

  CSREPORT system:  What can I do for you? MAIL
Sorry, but you can't use MAIL again at this session;
	you have to spool the output from this session first.

[MAIL can't be used twice in a single session, otherwise it would
clobber mailing labels and/or invoices it has written. So we can't
demonstrate here what happens when MAIL is used for abstracts rather
than reports.  But that is extremely simple; when you send out an
abstract list, MAIL simply makes a mailing label for everybody
on the mailing list whose code is C or F.

Incidentally, when MAIL is used for sending reports, and if activity
codes are being shifted, there will be mailing labels made up for
everybody whose code is A, M, or N, but no invoices for those people
will be printed.]
[Example of SENDing reports]

  CSREPORT system:  What can I do for you? SEND
I have found 43 records about old reports in file ONHAND.DSK.

[When this sample dialog was run, the file ONHAND.DSK contained 43 entries
about early CS reports in stock, covering up to CS105 only. The SEND procedure
uses this file to check inventory, and SEND is easiest to use if ONHAND.DSK 
is kept up to date; see page 16 for a description of this file, and see the 
ADJUST routine for information on updating the inventory file.

SEND is used for distributing reports AFTER the initial mailing. The MAIL
routine is used once with each batch of reports; after that, they
are entered into the ONHAND.DSK file, and SEND takes care of them.

SEND also makes up labels, the same as MAIL.  However, it's too much trouble to 
physically mount the label forms on the printer for so few orders.  So the 
addresses are just spooled on paper, in the normal way, and the paper is cut
and then mounted to serve as a label.]

Type hashcode (or 99999) for person requesting old reports: #HELP

I am going to try to identify an addressee for you. Type the
five-character hash code if you know it, or type 99999 if the
addressee is not on our mailing list and not being inserted into it.
If you don't know the hash code, type XXXXX and I will try a name search
of the whole file. If you type just <cr> now, I will go on to something
else. Since hash codes sometimes change, you should doublecheck the
addressee name I find in case it is the wrong person.

Type hashcode (or 99999) for person requesting old reports: #99999
Is the name PEOPLE NOT ON MAILING LIST? (Y or N) Y
Type the name and address of customer, followed by a blank line:
A. CUSTOMER

Type hashcode (or 99999) for person requesting old reports: #99999

[Here the computer rejected A.CUSTOMER, because it was only a name without an address.]

Is the name PEOPLE NOT ON MAILING LIST? (Y or N) Y
Type the name and address of customer, followed by a blank line:
A. CUSTOMER
UNIVERSITY OF PEKING
CHINA

Should this customer get the reports free of charge? (Y or N) Y
Type short name of report requested: HELP

Give the short name of a report requested, e.g. CS287 or AIM239 or HPP772,
followed by F if it is microfiche, e.g. CS287F.  But if no more 
reports are requested by this customer, just type <cr>.

Type short name of report requested: AIM40F
Type short name of the next report requested: CS100
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
STAN-CS-66-038(microfiche) MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER
STAN-CS-68-100(hardcopy) BREDT,MODEL OF INFORM. PROC. IN CHILDREN
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.
Type hashcode (or 99999) for person requesting old reports: #99999
Is the name PEOPLE NOT ON MAILING LIST? (Y or N) Y
Type the name and address of customer, followed by a blank line:
B. CUSTOMER
US DEPT OF DEFENSE
WASHINGTON DC 00000

Should this customer get the reports free of charge? (Y or N) N
Type short name of report requested: CS100
Type short name of the next report requested: AIM40F
Type short name of the next report requested: HPP771
I couldn't find that one in the file.
Enter its specs in the form STAN- or AIM-number followed by *AUTHOR,TITLE:
HPP-77-1*SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS
Do you want to enter it into the file? (Y or N) Y
What is the price of hardcopy? $2.20
How many hard copies are on hand? 5
How many microfiche copies are on hand? 0
Does it have an alternate number? HELP

I want to know whether this report can also be referenced by a different
name. For example, most AI Memos also have a CS Report number. If this
report has such an alternate name, type it, otherwise type NO or <cr>.

[By getting all names for a report like this, we ensure that it can be
 retrieved by any of its names, in the future.]

Does it have an alternate number? CS593
Type short name of the next report requested: HPP771F
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
STAN-CS-66-038(microfiche) MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER
HPP-77-1(hardcopy) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS  $ 2.20
We will say that we are unable to send
STAN-CS-68-100(hardcopy) BREDT,MODEL OF INFORM. PROC. IN CHILDREN
HPP-77-1(microfiche) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.

[Note that there was only one copy of CS100 left, according to the records in file
ONHAND.DSK, so A.CUSTOMER got it and B.CUSTOMER got a `sorry' message. The file
ONHAND.DSK didn't include any information about HPP771 at this time, so the information
specified was recorded and will be appended to the file for the next time SEND is used.]

[The system was changed as of March 1981, so that it no longer checks ONHAND.DSK
to see if we have a copy of the report on hand.  So, you'll have to be careful
that you don't try to send reports that we're out of.]

Type hashcode (or 99999) for person requesting old reports: #CZENZ
Is the name ZDENEK ZDRAHAL? (Y or N) Y
Type short name of report requested: HPP771
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
HPP-77-1(hardcopy) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.

[Since this customer is on our mailing list with `free' (F) status,
the price $2.20 does not show here as it did with B.CUSTOMER.]

Type hashcode (or 99999) for person requesting old reports: #XXXXX
Sorry, that hashcode isn't in the file. What is the name? MITCHELL
Here are all the entries matching that name:
#SCOFM: PROF. A.R. MITCHELL
#943AI: DR. JAMES MITCHELL
Type hashcode (or 99999) for person requesting old reports: #SCOFM
Is the name PROF. A.R. MITCHELL? (Y or N) Y
Type short name of report requested: CS122
I couldn't find that one in the file.
Enter its specs in the form STAN- or AIM- or HPP-number followed by *AUTHOR,TITLE:
STAN-CS-69-122*MITCHELL,MCCRAITH,VARIANTS OF GRAM-SCHMIDT
Do you want to enter it into the file? (Y or N) N
Do you have a copy on hand? (Y or N) N
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will say that we are unable to send
STAN-CS-69-122(hardcopy) MITCHELL,MCCRAITH,VARIANTS OF GRAM-SCHMIDT
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.
Type hashcode (or 99999) for person requesting old reports: #943AI
Is the name DR. JAMES MITCHELL? (Y or N) Y
Type short name of report requested: CS123
I couldn't find that one in the file.
Enter its specs in the form STAN- or AIM- or HPP-number followed by *AUTHOR,TITLE:
STAN-CS-69-123*BRENT,DISTR OF SMALL PRIME GAPS
Do you want to enter it into the file? (Y or N) N
Do you have a copy on hand? (Y or N) Y
What does a copy cost? $2.25
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
STAN-CS-69-123(hardcopy) BRENT,DISTR OF SMALL PRIME GAPS  $ 2.25
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.
Type hashcode (or 99999) for person requesting old reports: #AFRDB
Is the name D. BROWN? (Y or N) Y
Type short name of report requested: CS74*5
[This is the way to request multiple copies of a particular report.]

We are sending 5 copies of CS74.
Do you wish to change the price per copy? (Y or N) N
Do you wish to add a handling charge? (Y or N) Y
What is the handling charge? $1.50

[When we send large quantities of material, the price is sometimes changed.
In this case, the user added on a handling charge.]

Type short name of the next report requested: CS102F*10
I couldn't find that one in the file.
Enter its specs in the form STAN- or AIM- or HPP-number followed by *AUTHOR,TITLE:
STAN-CS-68-102*PNEULI,INTEGER PROGRAMMING OVER A CONE
Do you want to enter it into the file? (Y or N) Y
What is the price of hardcopy? $2.60
How many hard copies are on hand? 5
How many microfiche copies are on hand? 0

[It turns out that we don't have any microfiche copies of the report 
requested, so the customer will get the regular `sorry' message.]

Does it have an alternate number? N
Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
STAN-CS-67-074(hardcopy) FORSYTHE,WHAT IS SATISFACTORY QUAD-EQ SOLVER?
   (5 copies) @ $ 2.00:   $ 10.00
   Handling               $ 1.50
We will say that we are unable to send
STAN-CS-68-102(microfiche) PNUELI,INTEGER PROGRAMMING OVER A CONE
   (10 copies)
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.
Type hashcode (or 99999) for person requesting old reports: #BELNA
Is the name A.K. WATSON INTERNATIONAL ED. CTR.? (Y or N) Y
Type short name of report requested: CS84*8
The customer has requested 8 copies of this report, but we have only 6
    copies on hand.
Should I send the ones we have? (Y or N) HELP

If you type Y, I will send all the copies of this report which we
have on hand, with a note mentioning that we don't have the rest. If you type N
I won't fill any of the order (i.e., as if we were completely out of it),
and I'll send a sorry letter saying so.

Should I send the ones we have? (Y or N) Y
We are sending 6 copies of CS84.
Do you wish to change the price per copy? (Y or N) Y
List price is $ 2.65.
What is the actual price to be charged? $2.10
Do you wish to add a handling charge? (Y or N) N

[We can't completely fill the order, but the user decides to send as much as 
we have.  This time, the price is adjusted downward, as a volume discount.]

Type short name of the next report requested: 
Before I make up the invoice, you'd better doublecheck the above.
We will be sending
STAN-CS-68-084(hardcopy) FRIEDMAN,SYSTEM FOR TRANSFORMATIONAL GRAMMAR
   (6 copies) @ $ 2.10:   $12.60
We will say that we are unable to send
STAN-CS-68-084(hardcopy) FRIEDMAN,SYSTEM FOR TRANSFORMATIONAL GRAMMAR
   (2 copies)
Is it all right to make up the invoice? (Y or N) Y
OK, I am making an invoice for this customer.
Type hashcode (or 99999) for person requesting old reports: #
I wrote the invoices onto file BILLS.TMP. 
To print them, do
		XS BILLS.TMP/NOHEAD
and after successful completion don't forget to DEL BILLS.TMP.
The file BILLS$.TMP contains a list of the invoices sent (for your
permanent record).  You should XSpool it and then DELete it.
The mailing `labels' have been written onto the file SNDLAB.TMP.
You should spool them in the normal way. The paper can then be cut and pasted
onto the envelopes.

  CSREPORT system:  What can I do for you? SEND
Sorry, but you can't use SEND again at this session;
you have to spool the output from this session first.

  CSREPORT system:  What can I do for you? UPDATE
UPDATE: INS, DEL, MOD, or LOOK? LOOK
Type hashcode of entry to be displayed: #943AI
Is the name DR. JAMES MITCHELL? (Y or N) Y
LINE 1: DR. JAMES MITCHELL
LINE 2: XEROX
LINE 3: 3333 COYOTE HILL RD.
LINE 4: PALO ALTO, CALIFORNIA  94304
hashcode=#943AI,   category=C,   serial=1307,
ordering history=NNNNNNNNNNN2,   current balance=$ 2.25

[Mitchell had earlier ordered one report from the August list, but his
balance had been zero. Now his balance is $2.25, reflecting this new
order for CS123, and his last activity code has changed from 1 to 2.

The SEND routine writes bills that are essentially the same as invoices
written by MAIL; it also prepare mailing labels, in a similar way.

Time to move onto the next subsystem; first we get out of UPDATE:]
UPDATE: INS, DEL, MOD, or LOOK? 

[Finally, the last subsystem: ADJUST]

  CSREPORT system:  What can I do for you? ADJUST
I have found 45 records about old reports in file ONHAND.DSK.

[During the SEND session just completed, we added two new entries to the 
ONHAND.DSK file, bringing the total to 45. The purpose of the ADJUST routine
is to ensure that the file is kept up to date -- i.e., so that it reflects
our actual inventory.]

[With the change of March 1981, the inventory count is no longer used for
anything.  So, it's probably not necessary for you to work with ADJUST.]

Type short name of report to be adjusted: HELP

The ADJUST routine should be used to make all changes to the
inventory file, since editing with E is risky. To change the quantity
for a report, just enter its short name, e.g. CS287 or AIM 239F
or HPP772. You will be prompted for the new total of copies on hand.
If no more reports are to be updated, just type <cr>.

Type short name of report to be adjusted: CS31
STAN-CS-65-031*RAVIART,WEAK SOLS LINEAR PARABOLIC EQNS
Number of hard copies on record = 3.
Enter new quantity of hard copies: 2

[The system thought that we had three copies on hand. However, one of these
has evidentally been given out, without going through the SEND program.  The
user enters the new total, and everything's fine.]

Type short name of the next report to be adjusted: AIM40F
STAN-CS-66-038*MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER
Number of microfiche copies on record = 298.
Enter new quantity of microfiche copies: 295
Type short name of the next report to be adjusted: HPP772
I couldn't find that one in the file.
Do you want to enter it into the file? (Y or N) Y
Enter its specs in the form STAN- or AIM- or HPP- number 
followed by *AUTHOR,TITLE:
HPP-77-6*BUCHANAN,MITCHELL,MODEL-DIR LEARNING OF PRODN RULES
What is the price of the hardcopy? $9.22
How many hard copies are on hand? 2
How many microfiche copies are on hand? 0
Does it have an alternate number? N

[Here, the user is entering a report for the first time.  It will be added to
the end of the ONHAND.DSK file, and will be available to future calls to SEND.]

Type short name of the next report to be adjusted: 

[Having made sure that all our totals are correct, we exit. We're coming
to the end of the session now.]
[Finishing a session.]

  CSREPORT system:  What can I do for you? 
May I record all of today's transactions permanently on ADDFIL.DSK? (Y or N) Y

[The user typed just <cr>, indicating that this session is terminated. Then
the computer asked if the transactions from today should be recorded permanently.
So far, all the insertions, deletions, modifications, and changes to account
balances have been made only in the computer's mind, not on the file ADDFIL.DSK
which is the main record; so if a bad blunder has occurred, you can simply
answer N to this question, and the next session with CSREPT will go back
to the previous setting of ADDFIL.DSK.  This is your last chance to keep
serious errors out of the permanent file.
Note that even if you do make changes to the permanent file, you can always
`undo' the most recent session -- the file ADDFIL.BKP contains the address file
as it was before the start of the last session.
Incidentally, if you haven't actually changed any file entries (e.g., if you
simply recorded ORDERS or made mailing labels for an abstract list), you
don't get this message, since it is unnecessary to re-record ADDFIL.DSK when
it hasn't changed.]

[Usually your answer to the above question will be Y, and then the machine will
take a little while to spew out the file. Finally it will give you some
statistics, like this:]

The address file now contains a total of 1411 entries,
including the following special categories:
F = 198 A = 31 N = 25 M = 12
and the total balance outstanding is $ 1067.10.

[Furthermore if any money has been involved in the session, you get a
financial summary, to wit:]

SUMMARY of today's financial transactions:
$ 15.75 received in payments,
$ 12.25 of which was from residents of California.
$ .00 was subtracted from accounts due to adjustments or
	deletions from the mailing list.
$ 41.00 new charges were sent out on invoices.

See you later. Be sure to xspool a copy of DIALOG.TMP,
	which records what happened today.

[It is very important to make a copy of the file DIALOG.TMP, which shows
exactly what transpired; what you have been reading is simply an edited
version of the file DIALOG.TMP after a session which took place on 
October 9, 1976. Thus, the first thing to do after you get the above message
is `XSPOOL DIALOG.TMP'. (Exception: If no changes were made to ADDFIL.DSK,
and the session was essentially one big mistake, you can throw everything
away and forget that session.  But that will hardly ever happen.)
After that you can xspool INVOIC.TMP and/or BILLS.TMP and/or
print mailing labels from LABELS.TMP. Also, the files INVOI$.TMP and BILLS$.TMP
should be XSPooled and deleted, to show what was actually sent.
You might also like to make yourself a copy of ADDFIL.DSK and ONHAND.DSK  
and perhaps ORDERS.XXX for some month XXX; it is suggested that you use SPOOL 
not XSPOOL for these files.

Finally, before logging off, type `DIR' to the monitor, and it will
show you all the files currently present. You should delete all files
with the suffix TMP after they have been spooled or xspooled, and
you should also delete the ORDERS.XXX file as soon as it has been used
to make invoices for mailing reports. A fast way to delete all files
with suffix TMP is to say `DEL *.TMP<cr>' to the monitor.]
How to print the mailing labels produced in the MAIL subprogram

*****[Note: because of logistic changes, the following information
is out of date.  The correct documentation resumes at the
next group of asterisks below.]

First type this at the monitor:

ASSIGN LPT<cr>

Then run over to the printer, as soon as it has been assigned to you,
and hit the STOP button. Change the paper, putting the right mailing
labels in (AVERY or CHESHIRE, as you had specified) and lining them 
up right, then hit START button.

Then run back to your terminal and type

COPY LPT:←LABELS.TMP/EXTRA=0<cr>

Wait for the labels to be printed. When the printing is done, change
the paper back again, then run back to your terminal and type

DEASSIGN LPT<cr>

so that other people can begin to use the printer again.
Once the labels have been successfully printed, do

DEL LABELS.TMP<cr>

Congratulations, you have successfully gotten the labels printed
(and picked up a bit of exercise too).

Note that the labels generated by the SEND subprogram need only be spooled.

*****
With the move to Margaret Jacks, the SAIL line printer has been
eliminated.  (It gave trouble during printing anyway.)  The SCORE line
printer (in Rm. 433) is now used to print the labels.

Addresses are now printed on two-column labels.  For various reasons (not
entirely clear), the report system has not been modified to output
two-column addresses.  Rather, the output from the program (one-column
labels) is run through the program TWIN, which converts it to
double columns.

The sequence is:

RU TWIN

It will then prompt for the name of the source file.  TWIN will convert
this file, producing another file containing double columns.  This new
file will have the same name as the first one, but the extension will
be .LPT.

It is then necessary to FTP this new file at SCORE, in order to print
it.  To facilitate this process, TWIN will load the line editor with
the appropriate command to do this.  Just type <cr>, and things will
happen automatically.

Once the file has been moved to SCORE, it is necessary to log in there,
and PRINT it.

This step shouldn't be necessary; the report program should be modified
to produce double columns directly.  Nobody has had the time to
fix it to do that.
Files used by the system (general information)

The REPORT system deals with the following permanent files:

ADDFIL.DSK  The mailing list and account balances
ADDFIL.BKP  Backup version of the mailing list -- always one step behind ADDFIL.DSK
ONHAND.DSK  List of past reports and how many are on hand
FORM.DAT    Canned text used to print invoices

There are also twelve files called ORDERS.JAN, ORDERS.FEB, ..., ORDERS.DEC
which exist when orders for a given month's abstract list have been
recorded but not yet sent.

Then there are temporary files, which should be deleted as soon as they
have been properly spooled:

INVOIC.TMP  Invoices, bills of lading, dunning letters
BILLS.TMP   Invoices and bills of lading for isolated orders
LABELS.TMP  Mailing labels
DIALOG.TMP  Transcript of a session
INVOI$.TMP  Same info as INVOIC.TMP and BILLS.TMP,
BILLS$.TMP      but in a compressed form

The file FORM.DAT is never written on by the computer program; you can
edit it if you wish to change the wording of the invoices. Its format
is self-explanatory; the asterisks it contains must remain in the
same relative positions, as they divide the canned text into twenty
pieces that are used in various appropriate combinations.

The other files are periodically written out by the program. When newly
written, they are not in the format used by the system editor. But you
may edit them; after you type ET <filename> you will be asked if it's
OK to reformat the file, and the answer is Y.
However, you edit ADDFIL.DSK at your peril; it is much better to
use the system UPDATE function to do all updates to that file. 
The system checks for a lot of possible mistakes, and (most important)
keeps a record of exactly what happened, in DIALOG.TMP.
Even though you will therefore probably not be editing ADDFIL.DSK
you will probably want to understand its format, since it is helpful
to spool it every so often; page 14 describes its format.
Similarly, all changes to the ONHAND.DSK file should be made through the
ADJUST subprogram; this is used to ensure that the totals in the file
reflect current inventory.

There is always a backup version of ADDFIL.DSK in the file ADDFIL.BKP.
So, if the program screws up for some reason, it's always possible to 
get back to the state that you started in. (You should check with the
wizard, currently Jim Davidson, if anything ever goes wrong.)

You may want to edit an ORDERS.XXX file to correct erroneous orders
typed in to the ORDERS subsystem of REPORT. See page 15 for that format.

It is unlikely that you will be editing any of the TMP files; they
are just for spooling.  But pages 17, 18, etc. show what the TMP files
looked like after the sample dialog we have been studying, so that you
can get a better idea of what they contain.

The INVOI$.TMP and BILLS$.TMP files contain the same information as the 
other versions, except that is is `compressed' (i.e., extraneous text
removed). These provide you with a permanent record of the actual 
reports and invoices sent.  Like the others, they should be XSPooled
and then DELeted.

Two other files are present: REPORT.DMP and CSREPT.SAI. Please keep
your hands off of them unless you are an experienced programmer;
they are the computer programs.
ADDFIL.DSK

The master address file contains twenty addresses per page, in increasing
order by hash code.

An address entry consists of a mysterious header line followed by two to
five lines of address in straightforward format. The header line has the
following form:

*czzzzz|aaaaaaaaaaaa#hhhhh ssss$bbb.bb

where 	c	is the category code (C, F, N, M, A)
	zzzzz	is the zip code or country or IDMAI or ONRXX or DARPA or AUTOM
	aa...a	is the list of 12 activity codes (leftmost is oldest)
	hhhhh	is the hash code, its first three characters agree with zzzzz
	ssss	is the serial number, unique for each user
	bbb.bb  is the balance due, preceded by a minus sign if a credit balance

The file is not in order by serial number, since insertions and deletions
may change zip codes but not serial numbers.  The fields stated above all
have a fixed size, except that the bbb.bb field is variable length, as
many digits to the left of the decimal point as necessary.

For example, here is how ADDFIL.DSK looked after the sample dialog terminated:

*CAFRIC|NNNNNNNNNNN4#AFRDB    1$ 22.45
D. BROWN
UNIVERSITY OF WITWATERSRAND
1 JAN SMUTS AVENUE
JOHANNESBURG 2001
SOUTH AFRICA
*CAFRIC|NNNNNNNNNNN0#AFRFL    2$ .00
PROF. G.L. MURRAY
DEPT. OF COMPUTER SCIENCE
UNIVERSITY OF STELLENBOSCH
STELLENBOSCH, SOUTH AFRICA
.... [From here on, we show only important addressees that were named:]
*CBELGI|NNNNNNNN2040#BELNA 1138$ 17.05
A.K. WATSON INTERNATIONAL ED. CTR.
LIBRARY (NICOLE NEYENS)
135 CH. DE BRUXELLES
B-1310 LA HULPE, BELGIUM
*CCANAD|NNNNNNNNNNN5#CANRF  152$ 18.70
DR. F. FIALA
DEPT. OF MATHEMATICS
CARLETON UNIVERSITY
OTTAWA, CANADA K1S 5B6
....
*CCANAD|NNNNNNNNNNN2#CANRO  156$ .00
DR. R. S. ROSENBERG
DEPT. OF COMPUTER SCIENCE
UNIVERSITY OF BRITISH COLUMBIA
VANCOUVER 8, B. C., CANADA
....
*FIDMAI|NNNNNNNNNNN0#IDMFK 1411$ .00
PROF. A. C. YAO
POLYA 
....
*FIDMAI|NNNNNNNNNNN0#IDMFS 1412$ .00
PROF. F. FRANCES YAO
POLYA 
....
*FSWITZ|NNNNNNNNNNN2#SWINE  421$ .00
JOHN G. HERRIOT
GEERENSTRASSE 23
CH-8044 GOCKHAUSEN
SWITZERLAND
....
*C02167|NNNNNNNNNNN1#021FG  693$ 3.50
PROF. PETER KUGEL
COMPUTER SCIENCE PROGRAM
BOSTON COLLEGE
CHESTNUT HI11, MASSACHUSETTS
....
*C48202|NNNNNNNNNNN4#482II  967$ .00
PROF. WILLIAM I. GROSKY
MATHEMATICS DEPARTMENT
COMPUTER SCIENCE SECTION
WAYNE STATE UNIVERSITY
DETROIT,MICHIGAN 
....
*C94304|NNNNNNNNNNN2#943AI 1307$ 2.25
DR. JAMES MITCHELL
XEROX
3333 COYOTE HILL RD.
PALO ALTO, CALIFORNIA
....
*C94301|NNNNNNNNNNN0#943FW  616$ .00
PROF. N. WIRTH
1302 CHANNING AVE.
PALO ALTO CA 
....
*C94305|NNNNNNNNNNN0#99999 1409$-10.05
PEOPLE NOT ON MAILING LIST
C/O VICKI L. FAHRENHOLZ
COMPUTER SCIENCE DEPT.
STANFORD UNIVERSITY
STANFORD CA
 [End of the file.]

ORDERS.JAN, ORDERS.FEB, etc.

The files ORDERS.XXX consist of one of more lines in the form

#hhhhh,bbbssss:lllll<tab>date

where

hhhhh	is the hash code
bbb	is three blank spaces
ssss	is the serial number(with leading zeroes blank)
lllll	is a variable-length list of order codes 1,2,...,9,A,B,etc.
date	is the date the order was recorded

For example, after the sample dialog the file ORDERS.AUG looked like this:

#021FG,    693:F	9 OCT 1976
#019SE,    683:D2468ACEGIK	9 OCT 1976
#209UE,    922:248G	9 OCT 1976
#934HO,   1275:3DF68CI	9 OCT 1976
#IREFR,    445:D	9 OCT 1976
#JAPOK,    508:D48CX	9 OCT 1976
#303WM,    967:D468	9 OCT 1976
ONHAND.DSK

Each line in the file ONHAND.DSK must have the form

*a|b*c|d|e|$f<cr>   or  *a|SAME

where a,b,c,d,e,f are variable-length items with the following meanings:

a is the short name of a report
b is the STAN or AIM or HPP number
c is the author(s) and title
d is the number of hardcopies on hand
e is the number of microfiche copies on hand
f is the price

*a|SAME means that the short name a refers to the same report as the previous line.

For example, after the sample dialog with SEND and ADJ above, ONHAND.DSK became this:

*CS4|STAN-CS-64-004*BERGMAN,HERRIOT,NUMER SOLN BDRY VALUE BY INT OPERS|2|0|$ 2.40
*CS5|STAN-CS-64-005*ROSEN,EQUIL PTS FOR CONCAVE N-PERSON GAMES|2|0|$ 2.55
*CS7|STAN-CS-64-007*ROSEN,SUFF.COND.OPT.CONTROL CONVEX PROC.|1|0|$ 2.60
*CS11|STAN-CS-64-011*NAKAMURA,ROSEN,ELASTIC-PLASTIC ANAL OF TRUSSES|2|0|$ 2.65
*CS13|STAN-CS-64-013*PEREYRA,ROSEN,COMPUT.OF PSEUDOINVERSE|1|0|$ 2.55
*CS14|STAN-CS-64-014*EFIMENKO,EIGENVALUES AND EIGENFUNCTIONS IN PDE|2|0|$ 2.30
*CS15|STAN-CS-65-015*GRACE,NON-ISOMORPHIC CONVEX POLYHEDRA|1|0|$ 5.80
*CS17|STAN-CS-65-017*FORSYTHE,WIRTH,AUTOMATIC GRADING PROGRAMS|1|0|$ 2.20
*CS19|STAN-CS-65-019*AGEEV,MACLAREN,RUSSIAN ALGOL IN ENGLISH|1|0|$ 1.90
*CS23|STAN-CS-65-023*RUDIN,CONVEX POLYNOMIAL APPROXIMATION|3|0|$ 3.00
*CS25|STAN-CS-65-025*HODGE,YIELD-PT LOAD BY NONLINEAR PROGRAMMING|3|0|$ 2.40
*CS27|STAN-CS-65-027*VOLKOV,METHOD OF NETS FOR POISSON EQUATION|1|0|$ 2.60
*CS28|STAN-CS-65-028*MILLER,STRANG,MATRIX THMS FOR PDE'S|1|0|$ 2.70
*CS31|STAN-CS-65-031*RAVIART,WEAK SOLS LINEAR PARABOLIC EQNS|2|0|$ 3.35
*CS32|STAN-CS-65-032*HOCKNEY,MINIMUM MULTIPLICATION FOURIER ANAL|1|0|$ 3.30
*CS37|STAN-CS-66-037*REYNOLDS,COGENT 1.2 OPERATIONS MANUAL|5|0|$ 2.70
*CS38|STAN-CS-66-038*MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER|0|295|$ 2.10
*AIM40|SAME
*CS42|STAN-CS-66-042*KAHAN,WHEN NEGLECT OFF-DIAG ELTS SYMM TRI-DIAG MTX|3|0|$ 2.00
*CS49|STAN-CS-66-049*REDDY,COMPUTER SPEECH RECOGNITION|0|300|$ 6.00
*AIM43|SAME
*CS50|STAN-CS-66-050*PERSSON,SEQUENCE EXTRAPOLATING PROGRAMS|0|300|$ 7.00
*AIM46|SAME
*CS51|STAN-CS-66-051*BERGMAN,HERRIOT,KURTZ,TRANSONIC FLOW PATTERNS|5|0|$ 2.75
*CS55|STAN-CS-67-055*ADAMS,STOPPING CRITERION FOR POLYN.ROOT-FINDING|4|0|$ 2.05
*CS56|STAN-CS-67-056*BAUER,QD-METHOD WITH NEWTON SHIFT|3|0|$ 1.90
*CS62|STAN-CS-67-062*TIENARI,VARYING LENGTH FLOATING-PT ARITH|1|0|$ 2.85
*CS64|STAN-CS-67-064*RICHMAN,FLOATING-PT NUMBER REPRESENTATIONS|2|0|$ 2.65
*CS71|STAN-CS-67-071*JENKINS,TRAUB,AUTOMATIC POLYNOMIAL SOLVER|3|0|$ 2.85
*CS72|STAN-CS-67-072*GOLUB,SMITH,CHEBYSHEV APPROX BY CHEBYSHEV SYSTS|3|0|$ 3.30
*CS74|STAN-CS-67-074*FORSYTHE,WHAT IS SATISFACTORY QUAD-EQ SOLVER?|5|0|$ 2.00
*CS76|STAN-CS-67-076*ANSELONE,COLLECTIVELY COMPACT OPERATOR APPROX.|2|0|$ 3.50
*CS81|STAN-CS-67-081*GOLUB,WELSCH,GAUSS QUADRATURE RULES|5|0|$ 2.55
*CS82|STAN-CS-67-082*TESLER,ENEA,COLBY,DIGRAPH REPR BELIEF SYSTEMS|1|0|$ 2.65
*CS84|STAN-CS-68-084*FRIEDMAN,SYSTEM FOR TRANSFORMATIONAL GRAMMAR|0|0|$ 2.65
*CS94|STAN-CS-68-094*SHAW,FORMAL DESCR & PARSING OF PICTURES|1|0|$ 7.85
*SLACR84|SAME
*CS96|STAN-CS-68-096*SMITH,INTERVAL ARITH DET EVAL AND TESTING CHEB SYST|3|0|$ 2.50
*CS100|STAN-CS-68-100*BREDT,MODEL OF INFORM. PROC. IN CHILDREN|0|0|$ 3.50
*CS101|STAN-CS-68-101*KAPLAN,FORMAL STRONG EQUIV FOR ELEMENTAL PGMS|0|300|$ 9.60
*CS105|STAN-CS-68-105*RICHMAN, EPSILON CALCULUS|2|0|$ 5.85
*CS106|STAN-CS-68-106*HUBERMAN,PROGRAM TO PLAY CHESS END GAMES-THESIS|0|0|$ 9.60
*AIM65|SAME
*HPP771|HPP-77-1*SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS|3|0|$ 2.20
*CS102|STAN-CS-68-102*PNUELI,INTEGER PROGRAMMING OVER A CONE|5|0|$ 2.60
*HPP776|HPP-77-6*BUCHANAN,MITCHELL,MODEL-DIR LEARNING OF PRODN RULES|2|0|$ 9.22

Note that the number of hardcopies for CS100 and CS84 has dropped to 0,
and HPP771, CS102, and HPP776 have been added.
Here is what appeared on LABELS.TMP after the sample dialog:
PROF. C.A.R. HOARE          #IREFR
COMPUTER SCIENCE DEPT.                 
QUEEN'S UNIVERSITY                     
BELFAST BT7                            
NORTHERN IRELAND                       

HIROYA KAWAI                #JAPOK
DATA COMPUTATION CENTER                
OSAKA UNIVERSITY                       
SUITA CITY                             
OSAKA, JAPAN                           

CHARLES A. STEELE, JR.      #019SE
NORMAN AVE.                            
MAGNOLIA, MASSACHUSETTS  01930         



PROF. PETER KUGEL           #021FG
COMPUTER SCIENCE PROGRAM               
BOSTON COLLEGE                         
CHESTNUT HI11, MASSACHUSETTS  02167    


NAVAL SURFACE WEAPONS CTR.  #209UE
COMPUTER APPLICATIONS BRANCH           
CODE WA-53, RM. 3-252                  
WHITE OAK LABORATORY                   
SILVER SPRING, MARYLAND  20910         

PROF. WILLIAM I. GROSKY     #482II
MATHEMATICS DEPARTMENT                 
COMPUTER SCIENCE SECTION               
WAYNE STATE UNIVERSITY                 
DETROIT,MICHIGAN   48202               

R. H. DOURSON               #934HO
COMPUTER SCIENCE & STAT. DEPT.         
CALIFORNIA STATE POLYTECHNIC           
STATE UNIVERSITY                       
SAN LUIS OBISPO, CALIFORNIA  93407     


The file SNDLAB.TMP is similar:
A. CUSTOMER
UNIVERSITY OF PEKING
CHINA


B. CUSTOMER
US DEPT OF DEFENSE
WASHINGTON DC 00000

     .....
And here are the first invoices written onto INVOIC.TMP:

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: PROF. C.A.R. HOARE


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this packing slip:

STAN-CS-76-561(hardcopy) WOODS,MATH PROG LANGUAGE: USER'S GUIDE




PROF. C.A.R. HOARE                          #IREFR
COMPUTER SCIENCE DEPT.                            
QUEEN'S UNIVERSITY                                
BELFAST BT7                                       
NORTHERN IRELAND                                  

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: HIROYA KAWAI


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this packing slip:

STAN-CS-76-556(microfiche) GUIBAS,ANALYSIS OF HASHING ALGORITHMS(THESIS)
AIM-281(microfiche) MANNA,WALDINGER,IS`SOMETIME'SOMETIMES BETTER?
AIM-282(microfiche) TAYLOR,SYNTHESIS OF MANIPULATOR CONTROL PROGRAMS(THESIS)
STAN-CS-76-561(hardcopy) WOODS,MATH PROG LANGUAGE: USER'S GUIDE




HIROYA KAWAI                                #JAPOK
DATA COMPUTATION CENTER                           
OSAKA UNIVERSITY                                  
SUITA CITY                                        
OSAKA, JAPAN                                      

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: CHARLES A. STEELE, JR.


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this packing slip:

AIM-280(microfiche) GROSSMAN,TOLERANCING IN DICR PARTS MFG & ASSEMBLY
STAN-CS-76-556(microfiche) GUIBAS,ANALYSIS OF HASHING ALGORITHMS(THESIS)
STAN-CS-76-557(microfiche) PATERSON,INTRO TO BOOLEAN FUNCTION COMPLEXITY
AIM-281(microfiche) MANNA,WALDINGER,IS`SOMETIME'SOMETIMES BETTER?
STAN-CS-76-559(microfiche) GOLUB ET AL,RANK DEGENERACY AND LEAST SQUARES
AIM-282(microfiche) TAYLOR,SYNTHESIS OF MANIPULATOR CONTROL PROGRAMS(THESIS)
STAN-CS-76-561(hardcopy) WOODS,MATH PROG LANGUAGE: USER'S GUIDE
STAN-CS-76-561(microfiche) WOODS,MATH PROG LANGUAGE: USER'S GUIDE
STAN-CS-76-562(microfiche) KNUTH,TRABB PARDO,EARLY DEVEL OF PROG LANGUAGES
AIM-283(microfiche) DAVIS,APPL OF META KNOWLEDGE TO LARGE KNOWLG BASES(THESIS)
HPP-77-5(microfiche) STEFIK,MARTIN, REVIEW OF KNWLDGE BASED PROBLEM SOLVG



CHARLES A. STEELE, JR.                      #019SE
NORMAN AVE.                                       
MAGNOLIA, MASSACHUSETTS  01930                    


≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: PROF. PETER KUGEL


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-76-562(hardcopy) KNUTH,TRABB PARDO,EARLY DEVEL OF PROG LANGUAGES    $ 3.50

The cost of these reports is $ 3.50. Please make your check payable to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.

The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.

------------------------------- INVOICE -------------------------------------------

						    DATE: 9 OCT 1976

						AMOUNT DUE $ 3.50

					  PAYMENT ENCLOSED $________

					  REFERENCE CUSTOMER #: 021FG

PAYMENT FOR ACCOUNT OF

PROF. PETER KUGEL                           #021FG
COMPUTER SCIENCE PROGRAM                          
BOSTON COLLEGE                                    
CHESTNUT HI11, MASSACHUSETTS  02167               



PLEASE MAKE CHECK PAYABLE TO CSD STANFORD UNIVERSITY.
(Note: Overpayments are welcome. They will be credited to your account and
deducted from the cost of future reports you order.)
FORWARD PAYMENT AND INVOICE TO     VICKI L. FAHRENHOLZ
				   COMPUTER SCIENCE DEPT.
				   STANFORD UNIVERSITY
				   STANFORD CA 94305 USA

⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗
This is the record which was saved in INVOI$.TMP from the same run.

9 OCT 1976

PROF. C.A.R. HOARE                          #IREFR

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-76-561(hardcopy)

balance= 6.10

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

HIROYA KAWAI                                #JAPOK

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-76-556(microfiche)
AIM-281(microfiche)
AIM-282(microfiche)
STAN-CS-76-561(hardcopy)

balance= .00
    
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

CHARLES A. STEELE, JR.                      #019SE

The following reports that you have ordered are enclosed with this invoice:

AIM-280(microfiche)
STAN-CS-76-556(microfiche)
STAN-CS-76-557(microfiche)
AIM-281(microfiche)
STAN-CS-76-559(microfiche)
AIM-282(microfiche)
STAN-CS-76-561(hardcopy)
STAN-CS-76-561(microfiche)
STAN-CS-76-562(microfiche)
AIM-283(microfiche)
HPP-77-5(microfiche)

balance= .00
    
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

PROF. PETER KUGEL                           #021FG

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-76-562(hardcopy)

balance= 3.50
    
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
File BILLS.TMP after that dialog contains similar but more varied invoices:

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: A. CUSTOMER


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-66-038(microfiche) MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER
STAN-CS-68-100(hardcopy) BREDT,MODEL OF INFORM. PROC. IN CHILDREN




A. CUSTOMER
UNIVERSITY OF PEKING
CHINA
SUBJECT: REPORT ORDER				9 OCT 1976

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: B. CUSTOMER


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-68-100(hardcopy) BREDT,MODEL OF INFORM. PROC. IN CHILDREN
HPP-77-1(microfiche) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS

Stanford Ph.D. theses may be obtained from University Microfilms,
300 North Zeeb Road, Ann Arbor MI 48106; and other reports of our department
are usually obtainable from the National Technical Information Service,
5285 Port Royal Road, Springfield VA 22151. It generally takes a few
months after publication before the reports are available from these sources.

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-66-038(microfiche) MCCARTHY,PAINTER,CORRECTNESS OF A COMPILER
HPP-77-1(hardcopy) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS

The cost of these reports is $ 2.20. Please make your check payable to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.

The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.

------------------------------- INVOICE -------------------------------------------

						AMOUNT DUE $ 2.20

					  PAYMENT ENCLOSED $________

PAYMENT FOR ACCOUNT OF

B. CUSTOMER
US DEPT OF DEFENSE
WASHINGTON DC 00000

PLEASE MAKE CHECK PAYABLE TO CSD STANFORD UNIVERSITY.
(Note: Overpayments are welcome. They will be credited to your account and
deducted from the cost of future reports you order.)
FORWARD PAYMENT AND INVOICE TO     VICKI L. FAHRENHOLZ
				   COMPUTER SCIENCE DEPT.
				   STANFORD UNIVERSITY
				   STANFORD CA 94305 USA

⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: ZDENEK ZDRAHAL


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this invoice:

HPP-77-1(hardcopy) SCOTT ET AL,EXPLAN CPBLTIES OF PRODN-BASED SYSTEMS



ZDENEK ZDRAHAL                              #CZENZ
DEPT. OF CONTROL                                  
TECH. UNIV. OF PRAGUE                             
KARLOVA NAM. 13                                   
121 35 PRAHA 2, CZECHOSLOVAKIA                    


≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: PROF. A.R. MITCHELL


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-69-123(hardcopy) MITCHELL,MCCRAITH,VARIANTS OF GRAM-SCHMIDT

Stanford Ph.D. theses may be obtained from University Microfilms,
300 North Zeeb Road, Ann Arbor MI 48106; and other reports of our department
are usually obtainable from the National Technical Information Service,
5285 Port Royal Road, Springfield VA 22151. It generally takes a few
months after publication before the reports are available from these sources.




PROF. A.R. MITCHELL                         #SCOFM
DEPT. OF MATHEMATICS                              
UNIVERSITY OF DUNDEE                              
DUNDEE, SCOTLAND                                  



≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: DR. JAMES MITCHELL


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-69-123(hardcopy) BRENT,DISTR OF SMALL PRIME GAPS  $ 2.25

(California sales tax has been included in the above charges.)

The cost of these reports is $ 2.25. Please make your check payable to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.

The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.

------------------------------- INVOICE -------------------------------------------

						AMOUNT DUE $ 2.25

					  PAYMENT ENCLOSED $________

					  REFERENCE CUSTOMER #: 943AI

PAYMENT FOR ACCOUNT OF

DR. JAMES MITCHELL                          #943AI
XEROX                                             
3333 COYOTE HILL RD.                              
PALO ALTO, CALIFORNIA  94304                      



PLEASE MAKE CHECK PAYABLE TO CSD STANFORD UNIVERSITY.
(Note: Overpayments are welcome. They will be credited to your account and
deducted from the cost of future reports you order.)
FORWARD PAYMENT AND INVOICE TO     VICKI L. FAHRENHOLZ
				   COMPUTER SCIENCE DEPT.
				   STANFORD UNIVERSITY
				   STANFORD CA 94305 USA

⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: D. BROWN


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-68-102(microfiche) PNUELI,INTEGER PROGRAMMING OVER A CONE
   (10 copies)

Stanford Ph.D. theses may be obtained from University Microfilms, 
300 North Zeeb Road, Ann Arbor MI 48106; and other reports of our department
are usually obtainable from the National Technical Information Service,
5285 Port Royal Road, Springfield VA 22151. It generally takes a few
months after publication before the reports are available from these sources.

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-67-074(hardcopy) FORSYTHE,WHAT IS SATISFACTORY QUAD-EQ SOLVER?
   (5 copies) @ $ 2.00:   $ 10.00
   Handling               $ 1.50

The cost of these reports, together with the previous balance in your
account, comes to $ 22.45. Please make your check payable to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.

The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.

------------------------------- INVOICE -------------------------------------------

						AMOUNT DUE $ 22.45

					  PAYMENT ENCLOSED $________

					  REFERENCE CUSTOMER #: AFRDB

PAYMENT FOR ACCOUNT OF

D. BROWN                                    #AFRDB


		[normal invoice follows here]                   


⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡ new page ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡

SUBJECT: REPORT ORDER				9 OCT 1976

     TO: A.K. WATSON INTERNATIONAL ED. CTR.


   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

We are sorry that the following reports you have ordered are out of stock:

(Note that one of your orders could only be partially filled)

STAN-CS-68-084(hardcopy) FRIEDMAN,SYSTEM FOR TRANSFORMATIONAL GRAMMAR
   (2 copies)

Stanford Ph.D. theses may be obtained from University Microfilms, 
300 North Zeeb Road, Ann Arbor MI 48106; and other reports of our department
are usually obtainable from the National Technical Information Service,
5285 Port Royal Road, Springfield VA 22151. It generally takes a few
months after publication before the reports are available from these sources.

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-68-084(hardcopy) FRIEDMAN,SYSTEM FOR TRANSFORMATIONAL GRAMMAR
   (6 copies) @ $ 2.10:   $ 12.60

The cost of these reports, together with the previous balance in your
account, comes to $ 17.05. Please make your check payable to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.

The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.

------------------------------- INVOICE -------------------------------------------

						AMOUNT DUE $ 17.05

					  PAYMENT ENCLOSED $________

					  REFERENCE CUSTOMER #: BELNA

PAYMENT FOR ACCOUNT OF

A.K. WATSON INTERNATIONAL ED. CTR.          #BELNA


			[normal invoice follows here]


⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗
The BILLS$.TMP file from the same run.

9 OCT 1976

A. CUSTOMER
UNIVERSITY OF PEKING
CHINA


The following reports that you have ordered are enclosed with this invoice:

STAN-CS-66-038(microfiche)
STAN-CS-68-100(hardcopy)

balance= .00

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

B. CUSTOMER
US DEPT OF DEFENSE
WASHINGTON DC 000

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-68-100(hardcopy)
HPP-77-1(microfiche)

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-66-038(microfiche)
HPP-77-1(hardcopy)

balance= 2.20

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

ZDENEK ZDRAHAL                              #CZENZ

The following reports that you have ordered are enclosed with this invoice:

HPP-77-1(hardcopy)

balance= .00

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

PROF. A.R. MITCHELL                         #SCOFM

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-69-122(hardcopy)

balance= .00

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

DR. JAMES MITCHELL                          #943AI

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-69-123(hardcopy)

balance= 2.25

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

D. BROWN                                    #AFRDB

We are sorry that the following reports you have ordered are out of stock:

STAN-CS-68-102(microfiche)
   (10 copies)

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-67-074(hardcopy)
   (5 copies)

balance= 22.45

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
9 OCT 1976

A.K. WATSON INTERNATIONAL ED. CTR.          #BELNA

We are sorry that the following reports you have ordered are out of stock:


STAN-CS-68-084(hardcopy)
   (2 copies)

The following reports that you have ordered are enclosed with this invoice:

STAN-CS-68-084(hardcopy)
   (6 copies)

balance= 17.05

≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
Here is the FORM.DAT used to prepare the above bills:

INVOICE (Canned texts)
SUBJECT: REPORT ORDER				*

     TO: *

   FROM: LIBRARY AND PUBLICATIONS COMMITTEE
	 COMPUTER SCIENCE DEPARTMENT
	 STANFORD UNIVERSITY
	 STANFORD, CA 94305 USA

*The following reports that you have ordered are enclosed with this invoice:
*We are sorry that the following reports you have ordered are out of stock:
*Stanford Ph.D. theses may be obtained from University Microfilms, 
300 North Zeeb Road, Ann Arbor MI 48106; and other reports of our department
are usually obtainable from the National Technical Information Service,
5285 Port Royal Road, Springfield VA 22151. It generally takes a few
months after publication before the reports are available from these sources.
*According to our records you have a balance due of $* from orders previously
shipped. Please make your check payable, in American dollars, to `CSD Stanford 
University' and return it with the invoice at the bottom of this memo.
*The cost of these reports is $*. Please make your check payable, in American 
dollars, to `CSD Stanford University' and return it with the invoice at the 
bottom of this memo.
*The cost of these reports, together with the previous balance in your
account, comes to $*. Please make your check payable, in American dollars, to
`CSD Stanford University' and return it with the invoice at the bottom of 
this memo.
*You currently have a credit balance of $*. Thank you!
*The cost of these reports was exactly canceled by your previous credit
balance, so there is no further charge.
*(California sales tax has been included in the above charges.)
*------------------------------- INVOICE -------------------------------------------

						AMOUNT DUE $* U.S.

					  PAYMENT ENCLOSED $________ U.S.*

 					  REFERENCE CUSTOMER #: *

PAYMENT FOR ACCOUNT OF

*
PLEASE MAKE CHECK PAYABLE TO `CSD STANFORD UNIVERSITY'.
(Note: Overpayments are welcome. They will be credited to your account and
deducted from the cost of future reports you order.)
FORWARD PAYMENT AND INVOICE TO     STANFORD UNIVERSITY
				   COMPUTER SCIENCE DEPT.
				   POLYA HALL, ROOM 202
				   STANFORD, CA 94305 USA

⊗ → → → IT IS IMPORTANT THAT THIS INVOICE BE RETURNED WITH YOUR PAYMENT ← ← ← ⊗
 [Page mark here]
*
(Note that one of your orders could only be partially filled)*
The Computer Science Department of Stanford University will not exchange or
issue credit for returned publications, and is not responsible for damages
incurred in shipment of publications.
*
[This is the end of the data.]

Recovering from system crashes

The computer system will occasionally `crash'; under these conditions,
you will usually lose all the work you have done in the current session,
since the files aren't actually updated until the end of the run.

However, there is a mechanism which makes recovery from such situations
somewhat easier.  In the normal course of operation, whenever you type
something into the program, it is saved on a disk file (subject to a small
restriction, explained below).  Thus, in the event of a crash, the disk
file contains all the commands you gave, in the same order that you originally
typed them.  So, to recover from a crash, you need only to submit this
file as input to the system, and it will repeat (identically, we hope!)
all the actions it took earlier.

To do this, just restart the system, in a slightly different way. Type
	RUN REPORT; BACKUP<cr>
to the monitor.  The extra parameter tells the system that you wish
the initial input to come from the log of commands that it has saved.

The system will move through the log, executing the same commands, and
displaying the same results on the terminal as previously.  Thus, if
you watch your screen, you'll see a lot of things flashing by (you can
also stop this temporarily, by pressing the HOLD key on your keyboard).

When the end of the file has been reached, the system will print
	SWITCHING BACK TO TERMINAL INPUT.
and wait. That's your cue; you can carry on normally, as if the system 
crash had never happened.

There's one minor caveat.  When you are typing things to the system, the log
file cannot be written out every time you type a line (that would be too
slow, and take too much space), so there is a possibility that it will
have lost the last few lines you typed in (as many as 15).  So, before
rerunning the system, you might want to edit the file LOG.TMP, just to see
what the last command it recorded was (it's okay to let the editor
reformat the file, when it asks).  Incidentally, you should also be able to
tell this by watching your screen when you rerun the system.

If there's been a system crash, and you try to start up the program again
WITHOUT using the BACKUP option, the program will notice, and suggest that
you either start it in BACKUP mode, or delete the spurious log file.  This
prevents you accidentally clobbering a log file that you wanted.

Whenever you finish a run, and exit the system in the normal way, the
backup file (which was originally called LOG.TMP) is renamed to be
REPORT.LOG.  So, if for some reason you need to get at the log file for a
run you just completed, it's there.  You should delete this version
whenever you're through with it.
Appendix: Changes made to the program, and their dates.

This page contains a record of all modifications made to the program, and
should be consulted anytime you suspect something has been changed.


April 1977
	The use of HPP numbers as abbreviations was added to the documentation
(no change necessary to the code).

April 1977
	ADJUST subsystem added, for maintaining the inventory list.

April 1977
	SEND and MAIL extended, so that they write out compressed versions
of transactions (in INVOI$.TMP and BILLS$.TMP).

April 1977
	SEND extended to handle orders for multiple copies.

April 1977
	ORDER extended to with another subsystem: CHANGE.

June 1977 SEND modified so that it also writes a label file (SNDLAB.TMP).

July 1977 ONHAND.DSK file sorted.

December 1977 
	File handling modified, so that the previous state of the address file
is always available in ADDFIL.BKP.  This protects against glitches in the
program (combined with glitches in the SAIL tape facilities).

February 1978
	Actual file protection (backup and shuffling) implemented.

June 1978
	Minor changes made to FORM.DAT, to reflect  a) Connie replacing Vicki,
b) stress payment in U.S.$  c) stress payment to Stanford.

August 1978
	Warning message put in so that when ONHAND.DSK fills up, user is
told (limit is kept in `bsize').

October 1978
	A simple form of protection against system crashes was implemented.
A dribble file, LOG.TMP, now records all commands typed in from the terminal.
It can be submitted as input to recreate any actions lost in a system crash.

November 1978
	A new message added to FORM.DAT, mentioning that we won't give
exchanges or refunds on reports.

March 1979
	The invoice format was extended slightly, to include a message
`REFERENCE CUSTOMER #', with hashcode, on appropriate invoices.  This is
because cretins out there ignore the message to return the invoice w/ payment.
	A new class was set up, for automatic microfiche people, as suggested
at the committee meeting last month.  These will have category B; there
currently aren't any.

July 26, 1979
	A minor change made, so that the list of reports on an invoice will
be clustered according to hardcopy or fiche, and ordered numerically
within each cluster.

September 1979
	Two minor hacks added:  the date is now printed on the invoice (this
entailed a change to FORM.DAT, as well as to the program), and the invoice
will refer to itself as a 'packing slip' if there's no actual bill.
	Also a quick fix so that the short form (INVOI$, BILLS$) will print
the balance properly.  Previously, it printed absolute value.

October 1979
	A (disastrous) bug fixed.  When the user tries to CHANGE a set
of ORDERs which is larger than the maximum the program will accept
(currently set at 1000), the program tells him/her this, and suggests
using E.  Previously, though, it would also wipe out the ORDERS file,
because of an open channel.  This was solved by putting off the
opening until we're sure the file in small enough.
	Also, the size limit was raised from 700 to 1000, and a couple of
messages were added to the ADD phase, telling how many entries there were.

January 1980
	Minor fix: in the BILLS$.TMP and INVOI$.TMP files (i.e., the short
versions), invoices will be separated by a row of *'s, instead of ≡'s.  The
latter caused problems when printed on any system except SAIL.

March 1981
	Significant change made.  Between the new distribution policy (i.e.,
general access to the document room), and some strangenesses in the move
to JAX, the inventory has become quite inaccurate.  In particular, the
system will occasionally refuse to send reports that we actually have
copies of.  To get around this, I disabled checking; if the user asks to
send a report, the system assumes that we have it on hand, and prints
up an invoice accordingly.  The onus is thus on the user to only send
reports that we have.  If things ever get caught up again, I can always
reactivate the inventory checking.

Apri 1981
	Minor cosmetic changes made.  If the user starts in normal mode,
but the log.tmp file exists (i.e., there was probably a system crash),
the system prompts, suggesting that BACKUP mode be used.  This prevents
accidental clobberage of needed log information, which could occur if,
e.g., the user tried to check the address file following a system crash.
	Also, on completion of a successful run, the log file is always
saved in REPORT.LOG   This used to happen only if we had been running in
BACKUP mode, but it turns out to be useful if, eg., the user makes an
error near the end of a normal run, and loses a lot because the program
exits.

May 1981
	Minor error check put in.  If the user is MODifying an address, and
tries to reduce it to fewer than 2 lines, the system will issue a warning and
refuce to do it.  This check has always existed in INSert, but not in modify.

JULY 1981
	Fixed up a minor bug.  Previously, the invoice would not list the
user's old balance if he had a credit, but would use it when computing the
new amount due.  This meant that the individual items on the invoice
wouldn't add up to the total, which confused some customers.  The system
now prints out the amount of the previous balance, whether credit or
debit.